home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / programming / e / audiodt / audiodt.e < prev    next >
Text File  |  1999-06-14  |  2KB  |  118 lines

  1. OPT MODULE
  2. OPT EXPORT
  3.  
  4. /*
  5.  * This module is for hear files (VOC,WAV,IFF etc.)
  6.  * by means of datatypes.library
  7.  *
  8.  * AudioDT v1.0 - written by Krzysztof Cmok
  9.  * module is written in day 11-May-99
  10.  *
  11.  */
  12.  
  13. MODULE    'datatypes/datatypesclass'    -> definicje...
  14. MODULE    'datatypes/soundclass'        -> object 'voiceheader'
  15. MODULE    'intuition/classes'        -> object struct ;)
  16. MODULE    'amigalib/boopsi'        -> dla domethod
  17. MODULE    'datatypes'            -> wiadomo co
  18.  
  19. OBJECT audiodt
  20.     obj:PTR TO object            -> objekt
  21.     cycles:PTR TO LONG            -> sample cycles
  22.     period:PTR TO LONG                -> sample period
  23.     volume:PTR TO LONG                -> sample volume
  24.     buf:PTR TO LONG            -> sample data
  25.     buflen:PTR TO LONG            -> sample length
  26. ENDOBJECT
  27.  
  28. ->- procedure for open file...
  29. PROC load(filename) OF audiodt
  30. DEF buf,buflen
  31.  
  32.     IF (datatypesbase:=OpenLibrary('datatypes.library',0))=0 THEN RETURN 0
  33.     
  34.     self.obj:=NewDTObjectA(filename,
  35.                 [DTA_SOURCETYPE, DTST_FILE,
  36.                  DTA_GROUPID,     $736F756E,        -> ID: pict
  37.                  SDTA_CONTINUOUS,    TRUE,
  38.                  SDTA_VOLUME,        self.volume,
  39.                  SDTA_CYCLES,        self.cycles,0])
  40.     IF self.obj=0 THEN RETURN 0
  41.  
  42.     GetDTAttrsA(self.obj,[SDTA_SAMPLE,{buf},0])
  43.     GetDTAttrsA(self.obj,[SDTA_SAMPLELENGTH,{buflen},0])
  44.  
  45.     self.buf:=buf;
  46.     self.buflen:=buflen;
  47.     IF buflen=0 THEN RETURN 0
  48. ENDPROC -1
  49.  
  50. ->- play
  51. PROC play() OF audiodt
  52. DEF dtt:PTR TO dttrigger
  53.  
  54.     IF self.obj=0 THEN RETURN 0
  55.         NEW dtt
  56.         dtt.methodid := DTM_TRIGGER;
  57.         dtt.function := STM_PLAY;
  58.         doMethodA(self.obj,dtt);
  59.         END dtt
  60.  
  61. ENDPROC -1
  62.  
  63. ->- set volume
  64. PROC setvolume(vol) OF audiodt
  65.  
  66.     IF self.obj=0 THEN RETURN 0
  67.         SetDTAttrsA(self.obj,0,0,[SDTA_VOLUME,vol,0]);
  68.         self.volume:=vol;
  69. ENDPROC -1
  70.  
  71. ->- set period
  72. PROC setperiod(per) OF audiodt
  73.  
  74.     IF self.obj=0 THEN RETURN 0
  75.         SetDTAttrsA(self.obj,0,0,[SDTA_PERIOD,per,0]);
  76.         self.period:=per;
  77. ENDPROC -1
  78.  
  79. ->- set cycles
  80. PROC setcycles(cyc) OF audiodt
  81.  
  82.     IF self.obj=0 THEN RETURN 0
  83.         SetDTAttrsA(self.obj,0,0,[SDTA_CYCLES,cyc,0]);
  84.         self.cycles:=cyc
  85. ENDPROC -1
  86.  
  87.  
  88. ->- dispose
  89. PROC dispose() OF audiodt
  90.     DisposeDTObject(self.obj)
  91.     Dispose(self.obj)
  92.     CloseLibrary(datatypesbase);
  93.     self.obj:=0;
  94. ENDPROC -1
  95.  
  96. /* SIMPLE EXAMPLE
  97.  *****************
  98.  
  99. PROC main()
  100. DEF a:PTR TO audiodt
  101.  
  102. NEW a
  103.  
  104. IF (a.load('meanswar.wav'))=0 THEN CleanUp()
  105.  
  106. a.setvolume(64);
  107. a.setperiod(330);
  108. a.setcycles(1);
  109. a.play()
  110. Delay(100);
  111. a.dispose()
  112.  
  113. END a
  114.  
  115. ENDPROC
  116.  
  117. */
  118.